.TH std::erase_if(std::flat_set) 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::erase_if(std::flat_set) \- std::erase_if(std::flat_set)

.SH Synopsis
   Defined in header <flat_set>
   template< class Key, class Compare, class KeyContainer,

             class Pred >
   std::flat_set<Key, Compare, KeyContainer>::size_type         (since C++23)
       erase_if( std::flat_set<Key, Compare, KeyContainer>& c,

                 Pred pred );

   Erases all elements that satisfy the predicate pred from c.

   The predicate pred is satisfied if the expression bool(pred(std::as_const(e))) is
   true, where e is some element in c.

   Key must be MoveAssignable. Otherwise, the behavior is undefined.

.SH Parameters

   c    - container adaptor from which to erase
   pred - predicate that returns true if the element should be erased

.SH Return value

   The number of erased elements.

.SH Complexity

   Exactly c.size() applications of the predicate pred.

.SH Exceptions

   If erase_if throws, c remains in valid but unspecified (maybe empty) state.

.SH Notes

   The algorithm is stable, that is, the order of elements that are not deleted remains
   unchanged.

.SH Example


// Run this code

 #include <iostream>
 #include <flat_set>

 void println(auto rem, auto const& container)
 {
     std::cout << rem << '{';
     for (char sep[]{0, ' ', 0}; const auto& item : container)
         std::cout << sep << item, *sep = ',';
     std::cout << "}\\n";
 }

 int main()
 {
     std::flat_set data{3, 3, 4, 5, 5, 6, 6, 7, 2, 1, 0};
     println("Original:\\n", data);

     auto divisible_by_3 = [](auto const& x) { return (x % 3) == 0; };

     const auto count = std::erase_if(data, divisible_by_3);

     println("Erase all items divisible by 3:\\n", data);
     std::cout << count << " items erased.\\n";
 }

.SH Output:

 Original:
 {0, 1, 2, 3, 4, 5, 6, 7}
 Erase all items divisible by 3:
 {1, 2, 4, 5, 7}
 3 items erased.

.SH See also

   remove    removes elements satisfying specific criteria
   remove_if \fI(function template)\fP
